package com.thesis.manage.service;

import com.thesis.manage.common.mongodb.MongoService;
import com.thesis.manage.domain.StudentThesis;
import com.thesis.manage.domain.Thesis;
import com.thesis.manage.service.module.vo.StudentThesisVO;
import com.thesis.manage.service.module.vo.ThesisVO;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

import java.util.List;

/**
 * @author php
 * @date 2018/3/14
 */
public interface StudentThesisService extends MongoService<StudentThesis> {

    /**
     * 查询选题
     *
     * @param id 学生id
     * @return studentThesisVO
     */
    StudentThesisVO findByStudentId(Long id);

    /**
     * 选题
     *
     * @param thesisId  论题id
     * @param studentId 学生id
     */
    void selectThesis(Long thesisId, Long studentId);

    /**
     * 查看可选论题
     *
     * @param pageable      分页
     * @param studentNumber 学生号
     * @param studentId     学生id
     * @return page
     */
    Page<ThesisVO> showThesisList(Pageable pageable, String studentNumber, Long studentId);

    /**
     * 查看学生申报选题列表
     *
     * @param teacherNumber 教师编号
     * @return list
     */
    List<ThesisVO> reviewThesis(String teacherNumber);

    /**
     * 审核
     *
     * @param id      论题id
     * @param status  状态
     * @param message 消息体
     */
    void adopt(Long id, Integer status, String message);

    /**
     * 查看论题是否被选择
     *
     * @param id 论题id
     * @return boolean
     */
    Boolean exist(Long id);

    /**
     * 学生选题审核
     *
     * @param id          论题id
     * @param status      状态
     * @param message     消息体
     * @param teacherName 审核人
     */
    void selectThesisAdopt(Long id, Integer status, String message, String teacherName);

    /**
     * 查询 选题成功后的论题（学生id）
     *
     * @param studentId 学生id
     * @return thesis
     */
    Thesis myThesis(Long studentId);
}
